package com.huanf.utils;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.huanf.domain.pojo.AccessToken;
import org.junit.Test;

import static com.huanf.constants.SysConstant.APP_ID;
import static com.huanf.constants.SysConstant.APP_SECRET;

/**
 * 获取Access token，方便以后调用微信提供的api。注意前面写的回复用户消息的功能不需要Access token就能实现
 * 获取Access token的前提是有开发者ID(AppID)、开发者密码(AppSecret) 申请地址https://mp.weixin.qq.com
 */
public class MyTokenUtil {

    private static AccessToken accessToken = new AccessToken();

    public static void main(String[] args) {
        System.out.println(getToken());
        //调用两次，获取的依旧是同一个token
        //System.out.println(getAccessToken());
        //System.out.println(getAccessToken());
    }

    //获取token
    public static String getToken() {
        // %s是占位符，可以在String.format("", , )方法对占位符进行填充
        String url = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",
                APP_ID,
                APP_SECRET);
        String result = MyHttpUtil.doGet(url);//result={"access_token":"77_bNEhCWOdYKuhZmm6mHD62GXsO1MV4DhQCOkjMKvo9oo5XsiOnXJYuoUmAJ4OhQB3PB9jE-o76Q1rZMOOvhfe5NNqkr8pH9iV-Vgm8VmGaiaaBg0T4PMrS4QWyZsYUWcADAJFH","expires_in":7200}
        JSONObject jsonObject = JSONUtil.parseObj(result);
        String token = jsonObject.getStr("access_token");
        Long expiresIn = jsonObject.getLong("expires_in");
        accessToken.setToken(token);
        accessToken.setExpireTime(expiresIn);
        return token;
    }

    //取出AccessToken
    public static String getAccessToken() {
        getToken();//先调一下，让那个static静态域里面有这个值
        if (accessToken == null || accessToken.isExpired()) {
            getToken();
        }
        return accessToken.getToken();
    }



}
